////#include<bits/stdc++.h>
//#include <cstdio>
//#include <cstring>
//using namespace std;
////#define int long long
//#define endl "\n"
//#define x first
//#define y second
//
//const int INF = 0x3f, MOD = 1e9 + 7;
//
//int prime[100000000 + 5];
//int a[1000000 + 5];int k;
//void init(int n)
//{
//	memset(prime, 1, sizeof prime);
//	prime[0] = prime[1] = 0;
//	k = 0;	
//	for(int i = 2; i <= n; i++)
//	{
//		if(prime[i])//没筛掉 
//			a[++k] = i; //i成为下一个素数
//		
//		for(int j = 1; j <= k && i*a[j] <= n/*不超上限*/; j++) 
//		{
//			//从Prime[1]，即最小质数2开始，逐个枚举已知的质数，并期望Prime[j]是(i*Prime[j])的最小质因数
//			//当然，i肯定比Prime[j]大，因为Prime[j]是在i之前得出的
//			prime[i*a[j]] = 0;
//			
//			if(i % a[j] == 0)//i中也含有Prime[j]这个因子
//				break; //重要步骤。见原理
//		}
//	}
////	for (int i = 2; i <= n; ++ i ) {
////		if (prime[i] == 0) {
//////			a.push_back(i);
////			a[k ++] = i;
////			for (int j = i; j * i <= n; ++j) {
////				prime[j * i] = 1;
////			}
////		}
////
////	}
//}
//signed main()
//{
//	int n, q;
////	ios::sync_with_stdio(0);
////	cin.tie(0);cout.tie(0);
//
//
////	cin >> n >> q;
//	scanf("%d%d", &n, &q);
////	vector<int> a;
//	init(n);
//	
////	for(int i = 0 ;i < k ;++i){
////		printf("%d ",a[i]);
////	}
//	
//	while (q -- ) {
//		int temp;
////		cin >> temp;
//		scanf("%d", &temp);
////		cout<<a[temp -1];
//		printf("%d", a[temp]);
//		if (q != 0) {
////			cout<<endl;
//			printf("\n");
//		}
//	}
//	return 0;
//}
#include<iostream>
#include<vector>
using namespace std;
#define endl "\n";

template<typename T>
vector<T> primeSieve(T n){
	vector<bool> isPrime(n + 1,true);
	vector<T> primes;
	isPrime[0] = isPrime[1] = false;
	for(T i = 2 ; i * i <= n; ++i){
		if(isPrime[i]){
			for(T j = i * i;j <= n;j += i){
				isPrime[j] = false;
			}
		}
	}
	for(T i=2;i<=n;++i){
		if(isPrime[i]){
			primes.push_back(i);
		}
	}
	return primes;
}
int main(){
	int n,q;
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>> n >> q;
	
//	scanf("%d%d",&n,&q);
	vector<int> a = primeSieve(n);
	while(q --){
		int temp;
		cin >> temp;
//		scanf("%d",&temp);
//		printf("%d\n",a[temp -1]);
		cout<< a[temp - 1] << endl;
	}
	return 0;
}
